home *** CD-ROM | disk | FTP | other *** search
- /*
- File: DMFkey.c
-
- Description:Uses the Display Manager 2.0 (found in System 7.5.2 and later, or in
- the version 2.0 Display Enabler system extension which ships with
- AppleVision multisync displays) to change the monitor screen resolution
- the specified HxV resolutions.
-
- This FKey will flip between 640x480 and BIG.
- BIG is up to 2000x2000 if your monitor supports it.
-
- For information on the use of the RequestVideo sample code, please
- refer to the documentation found in the Display Manager Development
- Kit, or just look at the code and comments to figure it out.
-
- Author: EWA
-
- Copyright: Copyright: © 1996-1999 by Apple Computer, Inc.
- all rights reserved.
-
- Disclaimer: You may incorporate this sample code into your applications without
- restriction, though the sample code has been provided "AS IS" and the
- responsibility for its operation is 100% yours. However, what you are
- not permitted to do is to redistribute the source as "DSC Sample Code"
- after having made changes. If you're going to re-distribute the source,
- we require that you make it clear in the source that the code was
- descended from Apple Sample Code, but that you've made changes.
-
- Change History (most recent first):
- 6/24/99 Updated for Metrowerks Codewarror Pro 2.1(KG)
- 2/10/96 New today(EWA)
-
- */
-
- #define minHorizontalRequest 640
- #define minVerticalRequest 480
-
- #define maxHorizontalRequest 1600
- #define maxVerticalRequest 1200
-
- #define bitDepthRequest 32
-
- #include <Types.h>
- #include <Quickdraw.h>
- #include <OSUtils.h>
-
- #include "RequestVideo.h" // The code that does the real work
-
- struct INITGlobals {
- QDGlobals initQDGlobals; // FKEY's own private QDGlobals
- unsigned long initQDBase; // FKEY's global base
- };
- typedef struct INITGlobals INITGlobals;
-
- main()
- {
- VideoRequestRec requestRec;
- INITGlobals qdGlobs;
- long oldA5;
- unsigned long theHorizontalRequest;
- unsigned long theVerticalRequest;
-
- oldA5 = SetA5((long) &qdGlobs.initQDBase);
- InitGraf((Ptr) &qdGlobs.initQDGlobals.thePort);
-
- theHorizontalRequest = minHorizontalRequest;
- theVerticalRequest = minVerticalRequest;
-
- requestRec.screenDevice = GetMainDevice ();
- requestRec.reqHorizontal = (*(*(requestRec.screenDevice))->gdPMap)->bounds.right; // main screen is always zero offset (bounds.left == 0)
- requestRec.reqVertical = (*(*(requestRec.screenDevice))->gdPMap)->bounds.bottom; // main screen is always zero offset (bounds.top == 0)
- if (requestRec.reqHorizontal == minHorizontalRequest || requestRec.reqVertical == minVerticalRequest) // on a small screen now?
- {
- theHorizontalRequest = maxHorizontalRequest;
- theVerticalRequest = maxVerticalRequest;
- }
-
- requestRec.reqBitDepth = bitDepthRequest; // bit depth request
- requestRec.reqHorizontal = theHorizontalRequest; // H request
- requestRec.reqVertical = theVerticalRequest; // V request
- requestRec.displayMode = nil; // must init to nil
- requestRec.depthMode = nil; // must init to nil
- requestRec.requestFlags = 0;
- if (noErr == RVRequestVideoSetting(&requestRec))
- {
- RVSetVideoRequest (&requestRec);
- }
- SetA5(oldA5);
- return (noErr);
- }
-